home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / BYacc-CW 1.9 / error.c < prev    next >
Text File  |  1995-05-20  |  6KB  |  273 lines

  1. /* routines for printing error messages  */
  2.  
  3. #include "defs.h"
  4.  
  5.  
  6. void fatal(char *msg)
  7. {
  8.     fprintf(stderr, "%s: f - %s\n", myname, msg);
  9.     done(2);
  10. }
  11.  
  12.  
  13. void no_space(void)
  14. {
  15.     fprintf(stderr, "%s: f - out of space\n", myname);
  16.     done(2);
  17. }
  18.  
  19.  
  20. void open_error(char *filename)
  21. {
  22.     fprintf(stderr, "%s: f - cannot open \"%s\"\n", myname, filename);
  23.     done(2);
  24. }
  25.  
  26.  
  27. void unexpected_EOF(void)
  28. {
  29.     fprintf(stderr, "%s: e - line %d of \"%s\", unexpected end-of-file\n",
  30.         myname, lineno, input_file_name);
  31.     done(1);
  32. }
  33.  
  34.  
  35. static void print_pos(char *st_line, char *st_cptr)
  36. {
  37.     register char *s;
  38.  
  39.     if (st_line == 0) return;
  40.     for (s = st_line; *s != '\n'; ++s)
  41.     {
  42.     if (isprint(*s) || *s == '\t')
  43.         putc(*s, stderr);
  44.     else
  45.         putc('?', stderr);
  46.     }
  47.     putc('\n', stderr);
  48.     for (s = st_line; s < st_cptr; ++s)
  49.     {
  50.     if (*s == '\t')
  51.         putc('\t', stderr);
  52.     else
  53.         putc(' ', stderr);
  54.     }
  55.     putc('^', stderr);
  56.     putc('\n', stderr);
  57. }
  58.  
  59.  
  60. void syntax_error(int st_lineno, char *st_line, char *st_cptr)
  61. {
  62.     fprintf(stderr, "%s: e - line %d of \"%s\", syntax error\n",
  63.         myname, st_lineno, input_file_name);
  64.     print_pos(st_line, st_cptr);
  65.     done(1);
  66. }
  67.  
  68.  
  69. void unterminated_comment(int c_lineno, char *c_line, char *c_cptr)
  70. {
  71.     fprintf(stderr, "%s: e - line %d of \"%s\", unmatched /*\n",
  72.         myname, c_lineno, input_file_name);
  73.     print_pos(c_line, c_cptr);
  74.     done(1);
  75. }
  76.  
  77.  
  78. void unterminated_string(int s_lineno, char *s_line, char *s_cptr)
  79. {
  80.     fprintf(stderr, "%s: e - line %d of \"%s\", unterminated string\n",
  81.         myname, s_lineno, input_file_name);
  82.     print_pos(s_line, s_cptr);
  83.     done(1);
  84. }
  85.  
  86. void unterminated_text(int t_lineno, char *t_line, char *t_cptr)
  87. {
  88.     fprintf(stderr, "%s: e - line %d of \"%s\", unmatched %%{\n",
  89.         myname, t_lineno, input_file_name);
  90.     print_pos(t_line, t_cptr);
  91.     done(1);
  92. }
  93.  
  94.  
  95. void unterminated_union(int u_lineno, char *u_line, char *u_cptr)
  96. {
  97.     fprintf(stderr, "%s: e - line %d of \"%s\", unterminated %%union \
  98. declaration\n", myname, u_lineno, input_file_name);
  99.     print_pos(u_line, u_cptr);
  100.     done(1);
  101. }
  102.  
  103.  
  104. void over_unionized(char *u_cptr)
  105. {
  106.     fprintf(stderr, "%s: e - line %d of \"%s\", too many %%union \
  107. declarations\n", myname, lineno, input_file_name);
  108.     print_pos(line, u_cptr);
  109.     done(1);
  110. }
  111.  
  112.  
  113. void illegal_tag(int t_lineno, char *t_line, char *t_cptr)
  114. {
  115.     fprintf(stderr, "%s: e - line %d of \"%s\", illegal tag\n",
  116.         myname, t_lineno, input_file_name);
  117.     print_pos(t_line, t_cptr);
  118.     done(1);
  119. }
  120.  
  121.  
  122. void illegal_character(char *c_cptr)
  123. {
  124.     fprintf(stderr, "%s: e - line %d of \"%s\", illegal character\n",
  125.         myname, lineno, input_file_name);
  126.     print_pos(line, c_cptr);
  127.     done(1);
  128. }
  129.  
  130.  
  131. void used_reserved(char *s)
  132. {
  133.     fprintf(stderr, "%s: e - line %d of \"%s\", illegal use of reserved symbol \
  134. %s\n", myname, lineno, input_file_name, s);
  135.     done(1);
  136. }
  137.  
  138.  
  139. void tokenized_start(char *s)
  140. {
  141.      fprintf(stderr, "%s: e - line %d of \"%s\", the start symbol %s cannot be \
  142. declared to be a token\n", myname, lineno, input_file_name, s);
  143.      done(1);
  144. }
  145.  
  146.  
  147. void retyped_warning(char *s)
  148. {
  149.     fprintf(stderr, "%s: w - line %d of \"%s\", the type of %s has been \
  150. redeclared\n", myname, lineno, input_file_name, s);
  151. }
  152.  
  153.  
  154. void reprec_warning(char *s)
  155. {
  156.     fprintf(stderr, "%s: w - line %d of \"%s\", the precedence of %s has been \
  157. redeclared\n", myname, lineno, input_file_name, s);
  158. }
  159.  
  160.  
  161. void revalued_warning(char *s)
  162. {
  163.     fprintf(stderr, "%s: w - line %d of \"%s\", the value of %s has been \
  164. redeclared\n", myname, lineno, input_file_name, s);
  165. }
  166.  
  167.  
  168. void terminal_start(char *s)
  169. {
  170.     fprintf(stderr, "%s: e - line %d of \"%s\", the start symbol %s is a \
  171. token\n", myname, lineno, input_file_name, s);
  172.     done(1);
  173. }
  174.  
  175.  
  176. void restarted_warning(void)
  177. {
  178.     fprintf(stderr, "%s: w - line %d of \"%s\", the start symbol has been \
  179. redeclared\n", myname, lineno, input_file_name);
  180. }
  181.  
  182.  
  183. void no_grammar(void)
  184. {
  185.     fprintf(stderr, "%s: e - line %d of \"%s\", no grammar has been \
  186. specified\n", myname, lineno, input_file_name);
  187.     done(1);
  188. }
  189.  
  190.  
  191. void terminal_lhs(int s_lineno)
  192. {
  193.     fprintf(stderr, "%s: e - line %d of \"%s\", a token appears on the lhs \
  194. of a production\n", myname, s_lineno, input_file_name);
  195.     done(1);
  196. }
  197.  
  198.  
  199. void prec_redeclared(void)
  200. {
  201.     fprintf(stderr, "%s: w - line %d of  \"%s\", conflicting %%prec \
  202. specifiers\n", myname, lineno, input_file_name);
  203. }
  204.  
  205.  
  206. void unterminated_action(int a_lineno, char *a_line, char *a_cptr)
  207. {
  208.     fprintf(stderr, "%s: e - line %d of \"%s\", unterminated action\n",
  209.         myname, a_lineno, input_file_name);
  210.     print_pos(a_line, a_cptr);
  211.     done(1);
  212. }
  213.  
  214.  
  215. void dollar_warning(int a_lineno, int i)
  216. {
  217.     fprintf(stderr, "%s: w - line %d of \"%s\", $%d references beyond the \
  218. end of the current rule\n", myname, a_lineno, input_file_name, i);
  219. }
  220.  
  221.  
  222. void dollar_error(int a_lineno, char *a_line, char *a_cptr)
  223. {
  224.     fprintf(stderr, "%s: e - line %d of \"%s\", illegal $-name\n",
  225.         myname, a_lineno, input_file_name);
  226.     print_pos(a_line, a_cptr);
  227.     done(1);
  228. }
  229.  
  230.  
  231. void untyped_lhs(void)
  232. {
  233.     fprintf(stderr, "%s: e - line %d of \"%s\", $$ is untyped\n",
  234.         myname, lineno, input_file_name);
  235.     done(1);
  236. }
  237.  
  238.  
  239. void untyped_rhs(int i, char *s)
  240. {
  241.     fprintf(stderr, "%s: e - line %d of \"%s\", $%d (%s) is untyped\n",
  242.         myname, lineno, input_file_name, i, s);
  243.     done(1);
  244. }
  245.  
  246.  
  247. void unknown_rhs(int i)
  248. {
  249.     fprintf(stderr, "%s: e - line %d of \"%s\", $%d is untyped\n",
  250.         myname, lineno, input_file_name, i);
  251.     done(1);
  252. }
  253.  
  254.  
  255. void default_action_warning(void)
  256. {
  257.     fprintf(stderr, "%s: w - line %d of \"%s\", the default action assigns an \
  258. undefined value to $$\n", myname, lineno, input_file_name);
  259. }
  260.  
  261.  
  262. void undefined_goal(char *s)
  263. {
  264.     fprintf(stderr, "%s: e - the start symbol %s is undefined\n", myname, s);
  265.     done(1);
  266. }
  267.  
  268.  
  269. void undefined_symbol_warning(char *s)
  270. {
  271.     fprintf(stderr, "%s: w - the symbol %s is undefined\n", myname, s);
  272. }
  273.